package com.wyp.design.pattern.structural.composite;

/**
 * 测试组合模式
 * 组合模式：用于将一组相似的对象当做是一个单一对象使用，依据树形结构来组合对象，用来表示部分与整体的层次
 * 创建了一个包含自己对象组的类，该类提供了修改相同对象组的方式
 * 组合模式使得用户对单个对象和组合对象的使用具有一致性
 *
 * @author: Oliver
 * @time: 2020/5/16/22:28
 */
public class Test {
    public static void main(String[] args) {
        CatalogComponent linuxCourse = new Course("Linux课程", 11);
        CatalogComponent windowsCourse = new Course("Windows课程", 11);

        CatalogComponent javaCourseCatalog = new CourseCatalog("Java课程目录", 2);

        CatalogComponent mmallCourse1 = new Course("Java1", 55);
        CatalogComponent mmallCourse2 = new Course("Java2", 66);
        CatalogComponent designPattern = new Course("Java2", 77);
        javaCourseCatalog.add(mmallCourse1);
        javaCourseCatalog.add(mmallCourse2);
        javaCourseCatalog.add(designPattern);

        CatalogComponent imoocMainCourseCatalog = new CourseCatalog("主目录", 1);
        imoocMainCourseCatalog.add(linuxCourse);
        imoocMainCourseCatalog.add(windowsCourse);
        imoocMainCourseCatalog.add(javaCourseCatalog);
        imoocMainCourseCatalog.print();
    }

}
